Перейти к основному содержимому

Операции с массивами

Операции с массивами

Проверка наличия значений в массиве

contains — оператор, проверяющий наличие значения в массиве

ПримерОписаниеРезультат в виде лога
tags contains "malware_detected"Возвращает все логи, в которых массив tags содержит хотя бы один элемент "malware_detected"{ "tags": ["malware_detected", "endpoint"] }

Проверка отсутствия значений в массиве

not contains — оператор, проверяющий отсутствие значения в массиве

ПримерОписаниеРезультат в виде лога
tags not contains "authentication_success"Возвращает все логи, в которых массив tags не содержит элемента "authentication_success"{ "tags": ["authentication_failure", "external_ip", "brute_force", "warning"] }

Проверка наличия всех значений из списка

contains all — оператор, проверяющий наличие всех указанных значений в массиве

ПримерОписаниеРезультат в виде лога
tags contains all ["authentication_failure", "external_api", "brute_force"]Возвращает все логи, в которых массив tags содержит все перечисленные значения{ "tags": ["authentication_failure", "external_api", "brute_force", "warning"] }

Проверка наличия любого значения из списка

contains any — оператор, проверяющий наличие хотя бы одного значения из списка

ПримерОписаниеРезультат в виде лога
tags contains any ["anomaly", "suspicious"]Возвращает все логи, в которых массив tags содержит хотя бы одно из указанных значений{ "tags": ["anomaly", "privileged_user"] },{ "tags": ["suspicious"] }

Проверка состояния массива

is empty — оператор, проверяющий, является ли массив пустым

ПримерОписаниеРезультат в виде лога
tags is emptyВозвращает все логи, в которых массив tags существует, но не содержит элементов{ "tags": [] }

is not empty — оператор, проверяющий, является ли массив непустым

ПримерОписаниеРезультат в виде лога
tags is not emptyВозвращает все логи, в которых массив tags содержит хотя бы один элемент{ "tags": ["x"] }

Проверка размера массива

.length() — метод, возвращающий количество элементов в массиве

ПримерОписаниеРезультат в виде лога
tags.length() > 2Возвращает все логи, в которых массив tags содержит более двух элементов{ "tags": ["a", "b", "c"] }

Удаление дубликатов

.distinct() — метод, удаляющий дубликаты в массиве. Возвращает массив без повторяющихся элементов

Особенности метода:

  • Пустые NULL значения игнорируются
  • Порядок элементов сохраняется (остаётся только первый экземпляр)
  • При сравнении учитываются типы данных
ПримерОписаниеРезультат в виде лога
detected_signatures.distinct()Возвращает массив detected_signatures без повторяющихся элементов{ "detected_signatures": ["Trojan.Generic.123", "Adware.FakeAV", "Exploit.CVE-2021-34527"] }

Работа с элементами массива

Основные правила работы с элементами массива:

Проверка на равенство заданного элемента массива

ПримерОписаниеРезультат в виде лога
location[0] = 55.7558 and location[1] = 37.6173Возвращает все логи с точной геолокацией в центре Москвы{ "location": [55.7558, 37.6173] }

Проверка заданного элемента массива на условие

ПримерОписаниеРезультат в виде лога
(location[0] > 55.7 and location[0] < 55.82) and (location[1] > 37.58 and location[1] < 37.66)Возвращает все логи, координаты которых находятся в радиусе 5-10 км от центра Москвы{ "location": [55.7605, 37.6209] },{ "location": [55.8011, 37.618] }